The present invention relates to an error checking and correcting device and more particularly to a modular data processing system for providing single error correction, double error detection, and group error detection.
In data processing systems, it is necessary to transmit data between two points. Often there is noise in the communication channel through which the data is transmitted and as a result, the informational content of the data is distorted.
In order to check the data word transmitted for accuracy, various error detecting and correcting devices and techniques have been developed which typically requires some redundancy. These prior art techniques typically require the addition of check bits to the data word to form a code word with the entire code word being transmitted whenever the data portion of the code word is utilized. The check bits are typically generated according to some predetermined algorithm and the received code word is processed according to some predetermined algorithm to determine whether the data has been accurately transmitted.
Various single error correction, double error detection (SEC-DED) codes have been developed, such as the Hamming code (U.S. Pat. No. Re. 23,601 to Richard Hamming et al.) and Hsiao's minimum-odd-weight-column code (U.S. Pat. No. 3,623,155 to M. Y. Hsiao). These SEC-DED codes assume errors within a code word occur randomly and independently so that the probability of failure of every bit in the same code word is equal and independent of each other. The preferred environment for a random SEC-DED code is a communication channel in which each bit of a code word is discrete and homogeneous. An example of a discrete and homogeneous communication channel is a storage system with bit per card or bit per package arrangements.
From a packaging point of view, it is inefficient to partition the communication channel into discrete bit portions. It has therefore become necessary to partition the communication channel into modular groups, with a plurality of bits forming a group and a plurality of groups forming a code word. An example of a modular channel is a memory organized with multiple bits per card or multiple bits per package arrangements.
For a code word transmitted through a modular memory system, the malfunction of a module can affect many bits within the group. Depending upon the original information transmitted and the failure mode of the group, errors can be reflected in the receiver as a single bit failure, double bit failure, or a plurality of bit failures all in the same group.